Fix/issue170#171
Conversation
…дготовленных SQL-запросов и override_dbsession_in_route, мок для переопределения сессии ручки на тестовую сессию
…стройкой cascade, что дать алхимии понять в каком порядке их удалять, вне зависимости от связанных других таблиц
…turerUserComments
…ACK в фикстуру logging_sql_req_before_execute
Coverage Report
Summary
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
… юзера; оставлена модульная структура мока юзера, чтобы не хардкодить данные userdata в тестах
…a на соответствие замоканым
|
💩 Code linting failed, use |
|
💩 Code linting failed, use |
|
💩 Code linting failed, use |
…нта в фикстуре lecturers
| check_post_response = aiohttp_mp.post( | ||
| settings.API_URL | ||
| + f"achievement/achievement/{settings.FIRST_COMMENT_ACHIEVEMENT_ID}/reciever/{authlib_user.get('id'):}", | ||
| status=200, |
There was a problem hiding this comment.
здесь лучше писать status=status.HTTP_200_OK
| comment = Comment.query(session=dbsession).filter(Comment.uuid == post_response.json()["uuid"]).one_or_none() | ||
| assert comment is not None | ||
|
|
||
| # проверка корректной записи user_id и fullname при анонимных и не анонимных комментариях |
There was a problem hiding this comment.
в наших тестах если не передано is_anonymous то он по умолчанию true
то есть даже при отсутствии его в теле запроса надо проверять, что у нас реально не сохраняется имя пользователя и остается анонимным коммент
| assert user_comment is not None | ||
|
|
||
| # Проверка логики выдачи ачивок | ||
| if check_get_response.called: |
There was a problem hiding this comment.
а зачем это проверка? у нас же всегда выполняется check_get_response.called судя по коду
то есть можно просто убрать, здесь всегда выполнено
|
|
||
| if response_status == status.HTTP_200_OK: | ||
| comment = Comment.query(session=dbsession).filter(Comment.uuid == post_response.json()["uuid"]).one_or_none() | ||
| assert comment is not None |
There was a problem hiding this comment.
здесь еще я бы добавил проверку на правильный статус
https://github.com/profcomff/rating-api/blob/main/rating_api/routes/comment.py#L130
|
и еще, переименуй пр, пожалуйста, в более содержательное название |
|
https://github.com/profcomff/rating-api/actions/runs/28372071943/job/84052082838?pr=171 |
|
для того, чтобы понять 422 из-за чего возникает, просто сделай отладку виде проверки if responce==422 то сделать принт |
|
так что сейчас надо исправить все что выше написал + пару моментов по комментам в коде и будет мердж |



Изменения
Проблема падения 57 тестов с ERROR(Исправить падающие тесты #170)
Был исправлен баг из-за которого после падения не анониманого комментария с
ERRORпадало 57 тестовБыла исправлена причина падения теста
test_create_commentс тестовым набором включающим не анонимные комментарииДобавлена проверка полей добавляемых комментариев на соответствие userdata
Написание тестов для ручки import_comments(Написать тесты для ручки
post comment/import)Был реализован мок
aiohttpзапросов(для выдачи ачивки вtest_comment_create) через библиотеку aioresponsesДетали реализации
ERRORсвязан с не очевидным поведениемsqlalchemy, где на основе того, были ли подготовлены на вставку (INSERT) в текущей не завершенной транзакции одновременно записи в таблицахLecturerUserCommentиComment. Если тест падал сTypeErrorи успевала добавиться только одна из этих таблиц, алхимия в tear-down фикстурыlecturersв итоговый SQL запрос не добавляла строку на удаление записиLecturerUserComment- сразу после этого происходило удаление лектора из таблицыLecturer, что приводило к конфликту ведь не удаленныйLecturerUserCommentпо-прежнему ссылался на него.Решение: (update) В фикстуре lecturers добавлен dbsession.flush() после добавления в транзакцию каждого элемента на удаление.
test_create_commentс не анонимаными комментариями падал, из-за того, что для user-а передавалась не корректнаяuserdata. Были добавлены мок фикстурыauthlib_user,authlib_mockиuser_mockдля подмены данных user-а возвращаемыхUnionAuthCheck-List
blackиisortдля Back-End илиPrettierдля Front-End?